home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 1 / Meeting Pearls Vol 1 (1994).iso / installed_progs / text / faqs / os-research.part1 < prev    next >
Encoding:
Internet Message Format  |  1994-05-02  |  46.5 KB

  1. Subject: Comp.os.research: Frequently answered questions [1/2]
  2. Newsgroups: comp.os.research,comp.answers,news.answers
  3. From: bosullvn@tcd.ie (Bryan O'Sullivan)
  4. Date: 1 May 1994 08:58:56 GMT
  5.  
  6. Archive-name: os-research/part1
  7. Version: $Revision: 1.13 $
  8. Last-Modified: $Date: 1994/04/29 22:00:19 $
  9.  
  10.         Answers to frequently asked questions
  11.           for comp.os.research: part 1 of 2
  12.  
  13.               Copyright (C) 1994
  14.                Bryan O'Sullivan
  15.  
  16.  
  17.  
  18.               TABLE OF CONTENTS
  19.  
  20.  
  21. 1.     Introduction
  22. 1.1.   How to read this article
  23. 1.2.   Reader contributions and comments
  24. 1.3.   Acknowledgments and caveats
  25.  
  26. 2.     Recurrent discussions
  27. 2.1.   Microkernels, macrokernels, and the in-betweenies
  28. 2.2.   Threads
  29. 2.2.1. Distinguishing features
  30. 2.2.2. Characterising implementations of multithreading
  31. 2.2.3. The history of threads
  32.  
  33. 3.     File systems
  34. 3.1.   Extent-based versus log-structured file systems
  35.  
  36. 4.     Distributed systems
  37. 4.1.   What is the current status of the (insert name) project?
  38. 4.2.   How do approaches to load balancing differ?
  39. 4.3.   Fault tolerance in distributed systems
  40. 4.4.   Naming in distributed systems
  41. 4.5.   Distributed shared memory
  42. 4.6.   What have we learned?
  43.  
  44. 5.     Mobile and disconnected computing
  45. 5.1.   Constraints on software
  46. 5.2.   Communications protocols
  47. 5.3.   Access to files
  48. 5.4.   Power management
  49. 5.5.   Other issues
  50. 5.6.   An introductory mobile computing bibliography
  51.  
  52. 6.     Operating systems teaching
  53. 6.1.   What good undergraduate-level texts are available?
  54. 6.2.   What instructional operating systems can I use?
  55. 6.3.   Where can I find the canonical list of OS papers for grad courses?
  56.  
  57.  
  58.  
  59. ------------------------------
  60. Subject: [1] Introduction
  61. From: Introduction
  62.  
  63. This posting consists of answers to many of the questions most
  64. frequently asked and summaries of the topics most frequently covered
  65. on comp.os.research, the Usenet operating systems research discussion
  66. group.  The purpose of this posting is to circulate existing
  67. information, and to avoid rehashing old topics of discussion and
  68. questions.  Please read both parts of this document before posting to
  69. this newsgroup.
  70.  
  71. This newsgroup is moderated; the moderator is Darrell Long
  72. <darrell@cse.ucsc.edu>.  A companion posting to the FAQs, `Welcome to
  73. comp.os.research', briefly covers the moderation policy and guidelines
  74. for posting to comp.os.research.  It can be found in either
  75. comp.os.research or news.answers, and is posted regularly.
  76.  
  77. Due to its size, the FAQ is split up into two parts; each is posted once a
  78. month.  The welcome posting is posted fortnightly.  The FAQ is also
  79. available in hypertext form on the World-Wide Web, at
  80. http://www.maths.tcd.ie/scrg/os-faq.html.  You may prefer to browse the
  81. FAQ on the Web rather than on Usenet, as it contains many useful
  82. hyperlinks.
  83.  
  84. Note: chunks of text of the form [92-02-12-21-20.29] indicate the
  85. original posting from which a section of this article was inspired,
  86. snarfed, or just plain copied wholesale.  The FAQ as available on the
  87. Web has hyperlinks to the relevant articles.  Other chunks in square
  88. brackets are comments and reminders to myself.  These latter sections
  89. of text will be removed as appropriate material is added, but the
  90. attributions will remain.
  91.  
  92. ------------------------------
  93. Subject: [1.1] How to read this article
  94. From: Introduction
  95.  
  96. This article is posted in digest format; using the `G%' command from
  97. within the `nn' newsreader should split it up into separate
  98. sub-articles which you can browse through.
  99.  
  100. To skip to a particular question numbered n.m, use `/: \[n\.m\]' from
  101. most pagers.  From within GNU Emacs, you can use `C-s [n.m]'.  This
  102. article is treated as an outline when edited by GNU Emacs.
  103.  
  104. ------------------------------
  105. Subject: [1.2] Reader contributions and comments
  106. From: Introduction
  107.  
  108. Your contributions, comments, and corrections are welcomed; mail sent
  109. to <os-faq@cse.ucsc.edu> will be dealt with as quickly as I can
  110. manage.  Generally, performing a reply or followup to this article
  111. from within your newsreader should do the Right Thing.
  112.  
  113. While I am more than happy to include submissions of material for the
  114. FAQ if they seem appropriate, it would make my life a lot easier if
  115. such text were proof-read in advance, and kept concise.  I don't have
  116. as much time as I would like to digest 15K text files and summarise
  117. them in three paragraphs for inclusion here.
  118.  
  119. ------------------------------
  120. Subject: [1.3] Acknowledgments and caveats
  121. From: Introduction
  122.  
  123. Although this FAQ has been the result of a co-operative effort, any
  124. blame for inaccuracies and errors lies entirely with my edits.  I
  125. would like to thank the following people for their part in
  126. contributing to this article:
  127.  
  128. Arindam Banerji        <axb@cse.nd.edu>
  129. Surendar Chandra    <surendar@cs.duke.edu>
  130. Steve Chapin        <sjc@cs.purdue.edu>
  131. Crispin Cowan        <crispin@csd.uwo.ca>
  132. Dan Hildebrand        <danh@qnx.com>
  133. Gordon Irlam        <gordoni@netcom.com>
  134. Darrell Long        <darrell@cse.ucsc.edu>
  135. Chris Maeda        <cmaeda@cs.washington.edu>
  136. Peter Magnusson        <psm@sics.se>
  137. Craig Partridge        <craig@bbn.com>
  138. Tom Van Vleck        <tom_van_vleck@taligent.com>
  139. Robert Walsh        <rjwalsh@tcd.ie>
  140.  
  141. ------------------------------
  142. Subject: [2] Recurrent discussions
  143. From: Recurrent discussions
  144.  
  145. A number of topics tend to appear with regularity in comp.os.research.
  146. This section attempts to go over some of the most commonly-covered
  147. ground.  I haven't made the list of topics covered exhaustive by any
  148. means.
  149.  
  150. ------------------------------
  151. Subject: [2.1] Microkernels, macrokernels, and the in-betweenies
  152. From: Recurrent discussions
  153.  
  154. A recurrent topic of discussion in this newsgroup has been the
  155. comparison between microkernel (for example Mach and QNX) and
  156. `macrokernel' (traditional Unix) operating systems.  The basic notion
  157. of a microkernel consists of devolving as much functionality as
  158. possible into processes rather than the kernel itself; different
  159. systems take different approaches to implementing this.
  160.  
  161. However, anecdotal evidence [93-03-03-07-56.52] suggests that the
  162. distinction between microkernel and monolithic architectures is
  163. becoming more blurred as time goes on, as the two advance.  For
  164. example, most modern monolithic kernels now implement multiple threads
  165. of execution and fine-grained parallelism.  Architecturally, this
  166. approach begins to appear similar to a microkernel with several
  167. kernel-space processes working from shared memory.
  168.  
  169. As an aside, people often complain that the Mach system can't be a
  170. `real' microkernel, because it is so large (at least, this is the
  171. argument most frequently cited).  However, I have been told that
  172. automatically-generated code stubs contribute very significantly to
  173. the size of the kernel, and that some size reduction would be likely
  174. if MIG (the stub generator) produced better code.  [Can someone from
  175. CMU comment on this?]
  176.  
  177. Debating microkernels versus monolithic kernels on the basis of kernel
  178. size misses the central, architectural point.  In the same way as the
  179. point of a RISC processor is not to minimise the instruction count,
  180. but rather to make a different tradeoff between what is implemented
  181. in the processor instruction set and what is implemented in other
  182. ways, the microkernel architectural issue is to determine which
  183. services are implemented in the microkernel, and which services are
  184. implemented external to that microkernel.  By making appropriate
  185. choices here, the goal is to enhance various OS attributes in a manner
  186. that might not be addressable with a monolithic kernel OS.  System
  187. attributes such as performance, flexibility, realtime, etc. are all
  188. variables which are taken into account.
  189.  
  190. Some history:
  191.  
  192. Ira Goldstein and Paul Dale were the coiners of the term `microkernel'
  193. back around 1989.
  194.  
  195. ------------------------------
  196. Subject: [2.2] Threads
  197. From: Recurrent discussions
  198.  
  199. The exact meaning of the term `thread' is not generally agreed upon.
  200. One of the more common usages denotes a `lightweight' process
  201. (sequential flow of control) which shares an address space and some
  202. other resources with others, and for which context switching time is
  203. lower than for `heavyweight' (i.e. kernel-supported) processes.
  204.  
  205. Throughout the following material, when we refer to `processes', this
  206. can be taken as meaning heavyweight processes.
  207.  
  208. ------------------------------
  209. Subject: [2.2.1] Distinguishing features
  210. From: Recurrent discussions
  211.  
  212. Some of the features which distinguish different approaches to
  213. threading are listed below:
  214.  
  215. - Number of *concurrent* flows of control: generally, threads may
  216.   potentially make use of multiple processors in order to allow
  217.   several to execute concurrently.  That is, the model usually takes
  218.   into consideration the possibility that there may be more than one
  219.   flow of control active at any time.
  220.  
  221. - Scheduling policy: a thread scheduler may be pre-emptive, in which
  222.   case a thread is put to sleep either when it waits upon some
  223.   resource or runs for the full duration of its time quantum, or
  224.   non-pre-emptive, in which case individual threads continue to run
  225.   until they relinquish the processor themselves (either through
  226.   waiting on a resource or calling the analogue of a sleep()
  227.   function).
  228.  
  229. Systems which are non-pre-emptive and may only ever have a single
  230. active flow of control (regardless of the number of processors
  231. available) are referred to as coroutine systems.  Coroutine
  232. programming requires quite a different approach from threads-based
  233. programming, as many of the synchronisation and resource-sharing
  234. problems which occur in threaded environments need never trouble the
  235. coroutines programmer.
  236.  
  237. ------------------------------
  238. Subject: [2.2.2] Characterising implementations of multithreading
  239. From: Recurrent discussions
  240.  
  241. An important distinction may be made between user-level threads and
  242. kernel-supported threads.  A user-level thread maintains all its state
  243. in user space.  A consequence of this is that no kernel resources need
  244. to be allocated per thread, and switching between threads can be done
  245. without changing address space.  A disadvantage is that user level
  246. threads cannot execute while the kernel is busy, for instance, with
  247. paging or I/O.  This would require some knowledge and participation on
  248. the part of the kernel.
  249.  
  250. It is possible to combine both methods, as is done in SunOS 5.x (aka
  251. Solaris 2.x).  Here, one or more light weight processes (LWPs)
  252. multitask one or more user-level threads, which in turn are
  253. implemented using user-space libraries.
  254.  
  255. Some issues which characterise thread implementations, and which
  256. determine the uses to which a threads package may be put, include:
  257.  
  258. - How much by way of kernel resources does a thread require?  This
  259.   will typically limit the number of threads that can be started by a
  260.   process.
  261.  
  262. - Under what circumstances will the entire process hang?  For
  263.   instance, if some thread gets a page fault, may another thread in
  264.   that process be dispatched?
  265.  
  266. - Does switching threads require a full system call (as on the SPARC),
  267.   or may context switches between threads be performed entirely at
  268.   user level?
  269.  
  270. - How are signals handled?  Can signals be masked individually per
  271.   thread?  Is there a `broadcast' signal?
  272.  
  273. - How are stacks handled?  Will the stacks shrink/grow dynamically on
  274.   a per thread basis?
  275.  
  276. Several systems today (QNX and Plan 9, for instance) take the stance
  277. that threads `fix the symptom, but not the problem'.  Rather than
  278. using threads because the OS context switch time is too slow, a better
  279. approach, according to the architects of these systems, is to fix the
  280. OS.  It's ironic, now that even PC-hosted desktop OSes provide
  281. MMU-protected multitasking, the fashionable programming model has
  282. become multiple threads running in a common address space, making
  283. debugging difficult, and also making it more difficult to generate
  284. reliable code.  With fast context switching, existing OS services like
  285. explicitly allocated shared memory between a team of cooperating
  286. processes can create a `threaded' environment, without opening the
  287. Pandora's box of problems that a fully shared memory space entails.
  288.  
  289. ------------------------------
  290. Subject: [2.2.3] The history of threads
  291. From: Recurrent discussions
  292.  
  293. [93-04-21-13-32.11] [92-01-27-17-05.54] The notion of a thread, as a
  294. sequential flow of control, dates back to 1965, at least, with the
  295. Berkeley Timesharing System.  Only they weren't called threads at that
  296. time, but processes [Dijkstra, 65].  Processes interacted through
  297. shared variables, semaphores, and similar means.  Max Smith did a
  298. prototype threads implementation on Multics around 1970; it used
  299. multiple stacks in a single heavyweight process to support background
  300. compilations.
  301.  
  302. Perhaps the most important progenitor of threads is the programming
  303. language PL/I, from about the 1965 time frame.  The language as
  304. defined by IBM provided a `CALL XXX (A, B) TASK;' construct, which
  305. forked a thread for XXX.  It is not clear whether any IBM compiler
  306. ever implemented this feature, but it was examined closely while
  307. Multics was being designed; it was decided that the TASK call as
  308. defined didn't map onto processes, since there was no protection
  309. between the threads of control.  So Multics took a different
  310. direction, and the TASK feature was removed from PL/I by IBM in any
  311. case, along with the ABNORMAL attribute and lots of other weird stuff.
  312.  
  313. Then came Unix, in the early 1970s.  The Unix notion of a `process'
  314. became a sequential thread of control *plus* a virtual address space
  315. (incidentally, the Unix notion of a process derived directly from the
  316. Multics process design [Saltzer, 66]).  So `processes', in the Unix
  317. sense, are quite heavyweight machines.  Since they cannot share memory
  318. (each has its own address space), they interact through pipes,
  319. signals, etc).  Shared memory (also a rather ponderous mechanism) was
  320. added much later.
  321.  
  322. After some time, Unix users started to miss the old processes that
  323. could share memory.  This led to the `invention' of threads: old-style
  324. processes that shared the address space of a single Unix process.
  325. They also were called `lightweight', by way of contrast with
  326. `heavyweight' Unix processes.  This distinction dates back to the very
  327. late 70s or early 80s, i.e. to the first `microkernels' (Thoth
  328. (precursor of the V-kernel and QNX), Amoeba, Chorus, the
  329. RIG-Accent-Mach family, etc).
  330.  
  331. On a side note, threads have been in continuous use in
  332. telecommunications applications for quite a long time.
  333.  
  334. See also:
  335.  
  336. [Cheriton, 79]
  337.   Cheriton, D. R., `Multi-process structuring and the Thoth operating
  338.     system', Ph.D. Thesis, University of Waterloo, 1979.
  339.  
  340. [Daley & Dennis, 68]
  341.   Daley, R. C., Dennis, J. B., `Virtual memory, processes, and
  342.     sharing in Multics', Comm, ACM 11, 306-312, May 1968.
  343.  
  344. [Dennis & van Horn, 66]
  345.   Dennis, J. B., van Horn, E. C., `Programming semantics for
  346.     multiprogrammed computations', MAC-TR-21, 1966.
  347.  
  348. [Dijkstra, 65]
  349.   Dijkstra, E. W., `Cooperating sequential processes', in `Programming
  350.     Languages', Genuys, F. (ed.), Academic Press, 1965.
  351.  
  352. [Saltzer, 66]
  353.   Saltzer, J. H., `Traffic control in a multiplexed computer system',
  354.     MAC-TR-30 (Sc.D. Thesis), July, 1966.
  355.  
  356.  
  357. ------------------------------
  358. Subject: [3] File systems
  359. From: File systems
  360.  
  361. This field is discussed both here and in the comp.arch.storage
  362. newsgroup.  This section needs fleshing out at the moment; it will
  363. grow over time (hopefully!).
  364.  
  365. ------------------------------
  366. Subject: [3.1] Extent-based versus log-structured file systems
  367. From: File systems
  368.  
  369. [92-11-18-10-57.53] [92-11-22-10-16.26] A general definition for a
  370. log-structured storage system might be the following: logging is an
  371. append-only storage semantics.  The unit of logging is the record.
  372. Write accesses append records to the end of the log.  A log record may
  373. become obsolete.  Useless records are compacted out of the log when
  374. possible.  Other write accesses are forbidden.
  375.  
  376. An extent-based file system is another candicate for better filesystem
  377. performance.  The approach used under QNX, for example, is to have
  378. files exist as an array of extents on disk, where each is extent is as
  379. many contiguous blocks as could be allocated at that location.  By
  380. using a bitmap for space allocation, files can also grow `in-place',
  381. if adjacent free space on disk exists.  This approach allows the unit
  382. of disk space allocation to remain 512 bytes, which is also the
  383. smallest unit of physical I/O.  The potential performance bottleneck
  384. of this approach does not happen because the filesystem code passes
  385. I/O requests to the disk drivers in units of extents, not 512 byte
  386. blocks.  The filesystem also heuristically modifies the size of the
  387. pre-read requests based on the historical access pattern to the
  388. file.  This approach provides the performance advantages of larger
  389. physical disk block sizes, without the wasted disk space that results
  390. from unused portions of large blocks, or the complexity of trying to
  391. allocate space from partially unused blocks.
  392.  
  393.  
  394. ------------------------------
  395. Subject: [4] Distributed systems
  396. From: Distributed systems
  397.  
  398. A great deal of the high-profile research carried out in operating
  399. systems these days deals with distributed computing.  Not
  400. surprisingly, discussions of distributed systems make up a large
  401. amount of the traffic on comp.os.research.
  402.  
  403. ------------------------------
  404. Subject: [4.1] What is the current status of the (insert name) project?
  405. From: Distributed systems
  406.  
  407. See the section on `available software' for information on
  408. distributions of some of the systems mentioned here.
  409.  
  410. - The Amoeba project is still going.  There are roughly 20 people
  411.   working on it, but most of these are no longer kernel hackers.  They
  412.   are working on using it for parallel programming, wide-area
  413.   distributed systems, and other things.  Amoeba is used in over 100
  414.   universities at the moment, and is also used at commercial
  415.   institutions.
  416.  
  417. - Cronus is still under development at BBN.  The current public
  418.   release is 3.0.  The project currently has two thrusts---as the base
  419.   for advanced distributed system R&D, and as a platform for
  420.   constructing and deploying sophisticated distributed applications.
  421.  
  422.   Ongoing research topics include the integration of Cronus and Mach
  423.   technology, the exploration of techniques for the construction of
  424.   WAN-based and multi-organisational applications, investigation into
  425.   the integration of distributed systems and network management
  426.   systems, and work in high-performance distributed computing.
  427.  
  428. - Horus is being developed by the same group that worked on Isis; the
  429.   head of this group is Robbert van Renesse.
  430.  
  431. - Isis is no longer being developed at Cornell; it is now managed as a
  432.   commercial product.
  433.  
  434. - Mach: awaiting response from rfr
  435.  
  436. - Plan 9 is currently being restructured to make good use of a 300MBPS
  437.   fibre-optic network.  A general release of the system is under
  438.   consideration at the moment.
  439.  
  440. - QNX is a commercial realtime OS with an installed base of over
  441.   250,000 systems.  It is used extensively in process control, factory
  442.   automation, medical instrumentation, communications and
  443.   point-of-sale.  A number of universities are also doing research
  444.   with QNX.
  445.  
  446. - The Sprite network operating system project is winding down.  The
  447.   user community is shrinking, and only three people are currently
  448.   using the system as a basis for graduate research.  Sprite is
  449.   continuing to be used as the testbed for the Berkeley RAID project.
  450.  
  451. ------------------------------
  452. Subject: [4.2] How do approaches to load balancing differ?
  453. From: Distributed systems
  454.  
  455. Load-balancing policy falls into two broad groups: static and dynamic.
  456. Static policies use algorithms which operate without regard to
  457. run-time loads across a system, while dynamic policies use the
  458. run-time performance of various parts of a system in order to make
  459. more `informed' decisions about balancing.
  460.  
  461. [92-11-06-12-53.57] A dynamic load-balancing policy is one which uses
  462. run-time state information in making scheduling decisions.
  463.  
  464. There are two kinds of dynamic policies: adaptive and non-adaptive.
  465. The latter always use the same (fixed, load-dependent) policy; the
  466. former may adjust policy parameters in order to gradually improve
  467. their performance.
  468.  
  469. The key point is that while non-adaptive policies use only the
  470. information about the run-time state, adaptive policies use, in
  471. addition to this, information about current performance.
  472.  
  473. In adaptive policies, the rules for adjusting policy parameters may be
  474. static or dynamic.  An example of the former might be: `shift to a
  475. conservative migration rule when system-wide load patterns are varying
  476. too rapidly'.  An example of the latter could be: `increase
  477. sender-side threshold when migrated jobs cause slowdown rather than
  478. speedup'.  Some researchers refer to the performance-driven adaptation
  479. exhibited by the second policy as `learning'.
  480.  
  481. Since both non-adaptive policies and adaptive policies with static
  482. rules really use only load information, it is confusing to distinguish
  483. between them.  One way to avoid such confusion is to restrict the use
  484. of the word `adaptive' to policies that use performance feedback in
  485. order to drive their adjustment of policy parameters.
  486.  
  487. ------------------------------
  488. Subject: [4.3] Fault tolerance in distributed systems
  489. From: Distributed systems
  490.  
  491. [There has been a lot of traffic on this.  Material sought.]
  492.  
  493. ------------------------------
  494. Subject: [4.4] Naming in distributed systems
  495. From: Distributed systems
  496.  
  497. [Material on naming and/or global naming sought.]
  498.  
  499. ------------------------------
  500. Subject: [4.5] Distributed shared memory
  501. From: Distributed systems
  502.  
  503. [As for naming.]
  504.  
  505. ------------------------------
  506. Subject: [4.6] What have we learned?
  507. From: Distributed systems
  508.  
  509. Andy Tanenbaum started a (very long) thread on this topic in
  510. comp.os.research in April of 1992 [92-04-03-17-10.05].  The interested
  511. reader is directed to the comp.os.research archives, since this thread
  512. proved rather divisive (i.e. nobody really agreed on any issue).
  513.  
  514.  
  515. ------------------------------
  516. Subject: [5] Mobile and disconnected computing
  517. From: Mobile and disconnected computing
  518.  
  519. The subject of operating systems for mobile and
  520. frequently-disconnected computers has become a recurrent topic in this
  521. newsgroup.  This section attempts to give an overview of issues in
  522. this area.  [Text by Arindam Banerji.]
  523.  
  524. ------------------------------
  525. Subject: [5.1] Constraints on software
  526. From: Mobile and disconnected computing
  527.  
  528. System software for mobile computing is impeded by four distinct
  529. constraints:
  530.  
  531. - Compared to stationary computers, mobile computers will always be
  532.   resource poor [Satyanarayan, 93].  Although currently available PDAs
  533.   (Personal Digital Assistants) compare favourably with the
  534.   stand-alone workstations of a few years ago [Marsh, 93], they'll
  535.   most probably lag behind in compute capabilities, available power,
  536.   storage availability and communication bandwidth, for some time to
  537.   come.
  538.  
  539. - Mobility entails computation amid fluctuating resource availability
  540.   and constraints [Banerji, 93].  Communication bandwidth may be
  541.   available at discrete intervals, an available resource may suddenly
  542.   become unreachable or an otherwise in-expensive communication link
  543.   may be randomly replaced by an expensive alternate in transit.
  544.  
  545. - Security threats to both mobile computational elements as well as
  546.   the data accessed by them are greatly increased [Satyanarayan, 93].
  547.   Not only is it easier to lose, damage or be robbed of a carry-along
  548.   PDA, but it is often easier to tap into the data transferred (as is
  549.   well-known to much of the cellular communication industry).  Very
  550.   little work, except for that undertaken by the cellular
  551.   communication industry, has been done in the area of addressing the
  552.   specific security needs of mobile computing (as far as I know).
  553.  
  554. - User needs and their application requirements may not be the same as
  555.   those in stationary systems [Weiser, 91].  As mobile computers
  556.   become ubiquitous (this phrase coined by Mark Weiser), the number of
  557.   computer users will most probably increase exponentially.  Most or
  558.   many of these users will be far less computer literate than the
  559.   average computer user of today.  In addition, shopping, information
  560.   browsing and entertainment may be the typical use of such mobile
  561.   units, as opposed to traditional scientific computing, database
  562.   support or word processing.
  563.   
  564. Based upon an amalgam of these criteria, the next few sections discuss
  565. some of the main areas of ongoing research in mobile computing.
  566.  
  567. ------------------------------
  568. Subject: [5.2] Communications protocols
  569. From: Mobile and disconnected computing
  570.  
  571. Mobile-IP [Myles & Perkins, 93] `allows packets between mobile hosts
  572. or networks and other hosts (including fixed hosts) to be delivered
  573. along close to optimal routes'.  Compatibility with existing IP
  574. implementations is one of the key problems in Mobile-IP.  For example,
  575. [Perkins et. al, 93], have suggested a scheme based upon the loose
  576. source routing option of IP packets, but most existing IP
  577. implementations do not implement this option.  Scalability is yet
  578. another important issue.
  579.  
  580. The Columbia scheme [Ioannidis et. al, 91] uses IP-in-IP
  581. encapsulation, thus avoiding problems with non-conforming
  582. implementations; but it achieves only sub-optimal routing for mobility
  583. across widely distributed locations [Aziz, 94].  Some efficient
  584. implementations of IP-in-IP encapsulation capable of supporting
  585. near-optimal wide area mobile routing have been suggested [Aziz, 94],
  586. but more experimentation is required.
  587.  
  588. Apart from this, architectures and implementations that handle the
  589. impact of mobility at higher layers have also been proposed -- such as
  590. the connection-oriented services discussed by Katz [Keeton et. al.,
  591. 93], and the mobile socket interface discussed by Casey [Casey, 93].
  592. Current trends would appear to suggest that some form of Mobile-IP
  593. will soon become standard, whereas connection maintenance and caching
  594. in higher-level protocols still needs to be resolved.
  595.  
  596. ------------------------------
  597. Subject: [5.3] Access to files
  598. From: Mobile and disconnected computing
  599.  
  600. File access in a mobile computing environment, where the communication
  601. link to a file server is not guaranteed, has been a major area of
  602. study.  Coda [Satyanarayan, 90], a descendant of the Andrew File
  603. system (AFS), pioneered support for disconnected operations in
  604. file-systems.  Coda increases file availability by replicating a
  605. single volume at multiple server locations.  Disconnected operations
  606. occur when the set of accessible servers for a particular volume
  607. becomes null.  Coda supports disconnected operations by pre-caching
  608. the files a user is most likely to need and then allowing all
  609. operations on cached copies of these files, while disconnected.  Upon
  610. reconnection, reintegration occurs through reconciliation of the
  611. cached copy with the now-reachable server's copy, through the use of a
  612. replay log maintained during the disconnection.
  613.  
  614. Disconnected operations have also been implemented for AFS [Huston,
  615. 93].  The highly available peer-to-peer based Ficus [Page, 91] file
  616. system achieves similar results, although mobile computing was not one
  617. its initial applications.  Caching issues are beginning to predominate
  618. the open research topics in this area.  In between connected and
  619. disconnected states, there are many states of expensive, intermittent
  620. and unreliable connections.  Adapting caching to these varying
  621. situations is a necessity.  More importantly, as introduced by the
  622. Hoarding scheme of Coda, user control over some caching behavior is
  623. extremely beneficial, and this need for user input becomes even more
  624. important when the server connection is weak.
  625.  
  626. ------------------------------
  627. Subject: [5.4] Power management
  628. From: Mobile and disconnected computing
  629.  
  630. Current battery technology limits PDA use to only a few hours.  The
  631. conservation of power through system software is thus becoming a major
  632. area of research in mobile computing.  Two specific approaches to this
  633. problem exist.
  634.  
  635. - Some researchers [Greenawalt, 93] are attempting to analyse the effects
  636.   of application type, user input and operating system implementations on
  637.   device power consumption.  Based upon simulation data, several power
  638.   consumption models have been proposed for disks [Greenawalt, 93]
  639.   [Douglis & Marsh, 93].  Work in characterising and analysing the power
  640.   consumption problem is still ongoing.
  641.  
  642. - Several industry-led efforts, on the other hand, have focussed on
  643.   building system support for dynamic power-saving mechanisms.  The
  644.   Advanced Power Management standard presents an interface and structure
  645.   for manipulating power consumption.  The Nomadic System Group at Sun
  646.   Microsystems has integrated similar support into SVR4 [Bender et. al,
  647.   93].
  648.  
  649. Complete analysis of peripheral device power usage and experimentation
  650. with different strategies for implementing power management will certainly
  651. be useful.
  652.  
  653. ------------------------------
  654. Subject: [5.5] Other issues
  655. From: Mobile and disconnected computing
  656.  
  657. Two significant aspects of mobile computing give applications in this
  658. environment a very different flavour.
  659.  
  660. - The dynamic nature of the environment forces applications to handle
  661.   changes in the availability and allocation of software resources.
  662.   Dynamic changes to environment variables [Schlitt, 93], change in
  663.   the available version of a library [Goldstein, 94] and the ability
  664.   to lookup and retrieve objects from remote locations [Theimer, 93]
  665.   are all required to solve this problem.  For the very same reasons,
  666.   user interfaces add on an extra dimension, an issue which very few
  667.   have addressed so far [Landay & Kaufmann, 93]. All this has caused
  668.   certain vendors to move towards interpreted environments, based on
  669.   scripting(??) languages as such as Script-X (Kaleida) and Open
  670.   Scripting Architecture (Apple).
  671.  
  672. - Money will be a constituent of many of the transactions and
  673.   applications that mobile computers will typically be used for.
  674.   Hence, many pieces of system software will be required to handle,
  675.   understand and optimise the use of money [Kulkarni, 94].  As
  676.   mentioned by Ed Frank at the ICDCS '93 panel discussion on mobile
  677.   computing, transaction involving `money and sex' may well become the
  678.   biggest uses of the mobile computer.  Some initial forays into
  679.   reviewing policies for pricing Internet services [Shenker, 93] may
  680.   prove to be very useful and so will the experience of current
  681.   consumer service providers such as CompuServe and America Online.
  682.   This area will perhaps show the biggest divergence in the years to
  683.   come, since applications will be far more customer-needs driven than
  684.   technology-driven, as they have been in the past.
  685.  
  686. Finally, aspects of hardware support are critical to positioning any
  687. discussion on mobile computing.  The most ambitious system is perhaps
  688. the ParcTab system [Schlitt, 93] under development at Xerox PARC.  The
  689. ParcTab is a PDA that communicates via infrared data packets to a
  690. network of infrared transceivers.  The network, designed for use
  691. within a building, designates each room as a communication cell.  This
  692. infrastructure has the responsibility for providing reliable service
  693. as the ParcTab user moves from room to room.  More general purpose but
  694. less ambitious PDAs are currently available from AT&T (EO), Apple
  695. (Newton), IBM (Simon) etc.  Almost all recognise some alternate form
  696. of input, such as handwriting.  The capabilities of these PDAs are
  697. sure to increase in the coming years, and hopefully their prices will
  698. not follow a similar trend.
  699.  
  700. ------------------------------
  701. Subject: [5.6] An introductory mobile computing bibliography
  702. From: Mobile and disconnected computing
  703.  
  704. [Marsh, 93]
  705.   Marsh, B., Douglis, F. & Caceres, R., `System issues in mobile
  706.     computing', Technical Report, Matsushita Information Technology
  707.     Laboratory, ITL-TR-50-93
  708.  
  709. [Satyanarayanan, 93]
  710.   Satyanarayanan et. al, `Experience with disconnected operation in a
  711.     mobile computing environment', Proceedings of Mobile and
  712.     Location-Independent Computing Symposium, August 93, pp. 11-28
  713.  
  714. [Banerji, 93]
  715.   Banerji, A., Cohn, D. & Kulkarni, D., `Mobile computing personae',
  716.     Proceedings of Fourth Workshop on Workstation Operating Systems,
  717.     October 93, pp. 14-20
  718.  
  719. [Weiser, 91]
  720.   Weiser, M., `The computer for the 21st century', Scientific
  721.     American, September 91, pp. 94-104
  722.  
  723. [Myles & Perkins, 94]
  724.   Myles, A. & Perkins, C., Internet Draft, September, 93
  725.  
  726. [Perkins et. al, 93]
  727.   Bhagwat, P. & Perkins, C., `A mobile networking system based on IP',
  728.     Proceedings of Mobile and Location-Independent Computing
  729.     Symposium, August 93, pp. 69-82
  730.  
  731. [Ioannidis et. al, 91]
  732.   `IP based protocols for mobile internetworking', Proceedings of the
  733.     SIGCOMM-91 conference: Communications, Architectures and
  734.     Protocols, September 91, pp. 235-245
  735.  
  736. [Aziz, 94]
  737.   Aziz, A., `A scalable and efficient intra-domain tunneling mobile-IP
  738.     scheme', ACM SIGCOMM-Computer Communications Review, Vol 24.,
  739.     No. 1, January 94, pp. 12-20
  740.  
  741. [Keeton et al., 93]
  742.   Keeton, K. et al., `Providing connection oriented network services
  743.     to mobile hosts', Proceedings of Mobile and Location-Independent
  744.     Computing Symposium, August 93, pp. 83-102
  745.  
  746. [Casey, 94]
  747.   Casey, M., `Application and communication support for mobile
  748.     computing', Dissertation Proposal, University of Notre Dame,
  749.     January 94
  750.  
  751. [Satyanarayanan, 90]
  752.   Satyanarayanan, M., et al., `Coda: A highly available File-system
  753.     for a distributed workstation environment', IEEE Transactions on
  754.     Computers 39(4), April 90
  755.  
  756. [Huston, 93]
  757.   Huston, L. & Honeyman, P., `Disconnected operation for AFS',
  758.     Proceedings of Mobile and Location- Independent Computing
  759.     Symposium, August 93, pp. 1-10
  760.  
  761. [Page, 91]
  762.   Page, T. et al., `Architecture of the Ficus replicated file system',
  763.     Tech Report CSD-910005, University of California, Los Angeles,
  764.     March 91
  765.  
  766. [Greenawalt, 93]
  767.   Greenawalt, P., `Modelling power management for hard disks',
  768.     Intl. Workshop on Modelling, Analysis & Simulation of Computer and
  769.     Telecommunication Systems, January 94
  770.  
  771. [Douglis & Marsh, 93]
  772.   Douglis, F. & Marsh, B., `Low power disk management for mobile
  773.     computers', Technical Report, Matsushita Information Technology
  774.     Laboratory, MITL-TR-53-93
  775.  
  776. [Bender et. al, 93]
  777.   Nomadic Systems Group, Sun Microsystems, `UNIX for Nomads: Making
  778.     UNIX support mobile computing', Proceedings of Mobile and
  779.     Location-Independent Computing Symposium, August 93, pp. 53-68
  780.  
  781. [Schlitt, 93]
  782.   Schlitt, B., Theimer, M. & Welch, B., `Customizing Mobile
  783.     Applications', Proceedings of Mobile and Location-Independent
  784.     Computing Symposium, August 93, pp. 129-138
  785.  
  786. [Goldstein, 94]
  787.   Goldstein, T. & Sloane, A., `The object binary interface -- C++
  788.     objects for evolvable shared class libraries', Proceedings of the
  789.     USENIX C++ Conference, April 94
  790.  
  791. [Theimer, 93]
  792.   Theimer, M., Demers, A. & Welch, B., `Operating system issues for
  793.     PDAs', Proceedings of Fourth Workshop on Workstation Operating
  794.     Systems, October 93, pp. 14-20
  795.  
  796. [Landay & Kaufmann, 93]
  797.   Landay, J. & Kaufmann, T., `User-interface issues in mobile
  798.     computing', Proceedings of Fourth Workshop on Workstation
  799.     Operating Systems, October 93, pp. 40-47
  800.  
  801. [Kulkarni, 94]
  802.   Kulkarni, D., Banerji, A., Cohn, D., `Operating systems and cost
  803.     management', Operating Systems Review, January 94.
  804.  
  805. [Shenker, 93]
  806.   Shenker, S., `Service models and pricing policies for an integrated
  807.     services Internet', Proceedings on Conference on Public Access to
  808.     the Internet, JFK School of Government, Harvard University, May 93
  809.  
  810. [Schlitt, 93]
  811.   Schlitt et al., `The ParcTab mobile computing system', Proceedings
  812.     of Fourth Workshop on Workstation Operating Systems, October 93,
  813.     pp. 34-39
  814.  
  815.  
  816.  
  817. ------------------------------
  818. Subject: [6] Operating systems teaching
  819. From: Operating systems teaching
  820.  
  821. This section attempts to give some useful pointers to people who teach
  822. operating systems, both at undergraduate and postgraduate level.
  823.  
  824. ------------------------------
  825. Subject: [6.1] What good undergraduate-level texts are available?
  826. From: Operating systems teaching
  827.  
  828. The comments below have been provided by a variety of people, so any
  829. `me's or `I's you encounter are not necessarily those of the
  830. maintainer!
  831.  
  832. - `Operating Systems Concepts', fourth edition, by Abraham
  833.   Silberschatz and Peter Galvin is the latest version of this popular
  834.   text.  Addison-Wesley, 1994, ISBN 0-201-50480.  This book has been
  835.   revised to include new and updated information, examples, diagrams,
  836.   and an expanded bibliography.
  837.  
  838.   I think this is the `standard' OS text, although I have a couple of
  839.   others that I also think are good, and that I draw from when I teach
  840.   OS.  Previous editions of the dinosaur book don't have the greatest
  841.   organisation, and sometimes wander when describing things.  Its
  842.   strong point lies in the copious examples.
  843.  
  844.   Speaking of the third edition (I haven't seen a copy of the fourth
  845.   edition yet):
  846.  
  847.     The first 84 pages cover operating system basics, the next 120
  848.     pages cover process management including 30 pages on deadlocks.
  849.     130 pages on storage management: memory, virtual memory, secondary
  850.     storage.  70 pages on file systems and protection.  Then 100 pages
  851.     on distributed systems.  The last part of the book has case
  852.     studies on Unix and Mach: 50 pages on Unix and 30 pages on Mach.
  853.     The last chapter gives a short 10 page historical perspective.
  854.  
  855.   New to the current edition (mail a message with contents `send help'
  856.   to <os4e@aw.com> for further details):
  857.  
  858.   - New, early coverage of light-weight processes and threads.
  859.  
  860.   - Expanded coverage of Memory Management, including modern computer
  861.     architectures.
  862.  
  863.   - Enhanced realistic discussion of File System design,
  864.     implementation, And secondary storage management.
  865.  
  866.   - Improved coverage of real time and multiprocessor systems.
  867.  
  868.   - New coverage of networking as it relates to operating systems.
  869.  
  870.   - Expanded and up-to-date coverage of UNIX and the Mach operating
  871.     system.
  872.  
  873.   - Common operating systems, including Sun Solaris 2, MS-DOS, OS/2,
  874.     Macintosh, in each chapter to illustrate concepts and show
  875.     performance examples.
  876.  
  877.   The book gives a good (but slightly theoretical) overview of
  878.   operating system concepts.  A good complement would be the books
  879.   covering Minix or BSD, which are more implementation-oriented.
  880.  
  881. - `An Operating Systems Vade Mecum', second edition, by Raphael
  882.   Finkel, 1988, Prentice Hall, ISBN 0-13-637950-8.  I really like this
  883.   book; it is a bit more theoretical than the dinosaur book, but is
  884.   well-written and clear.  I would accompany it with labs based on one
  885.   of the educational experimental OS's (NachOS, OSP) for hands-on
  886.   experience.
  887.  
  888.   The edition mentioned above is now out of print.  However, it may be
  889.   obtained via anonymous ftp from
  890.   ftp.ms.uky.edu:pub/tech-reports/UK/cs/vade.mecum.2.ps.Z.  Here is
  891.   the associated chunk of README:
  892.  
  893.     This textbook is out of print.  It was published by Prentice Hall.
  894.     The author now owns the copyright.  Permission is granted to copy
  895.     this text for any noncommercial purpose.  Feel free to generate
  896.     copies of the text for your students.  You may also photocopy the
  897.     original book without restriction.  Kindly send suggested upgrades
  898.     to the author: raphael@ms.uky.edu.  He is planning a new edition
  899.     sometime.
  900.  
  901.   [It's been a few years since I've looked at this book, so I can't
  902.    remember what it contains.  Can anyone help?]
  903.  
  904. - `The Logical Design of Operating Systems', second edition, Lubomir
  905.   Bic, Alan Shaw, 1988, Prentice Hall, ISBN 0-13-540139-9.  This one
  906.   isn't as theoretical as Finkel's book, nor is it as long as the
  907.   dinosaur book.  I haven't tried to use it in a course yet, but it
  908.   looks like a fairly well-rounded text.
  909.  
  910.   [Can anyone write a paragraph on the various topics covered ... ?]
  911.  
  912. - `Modern Operating Systems,' Andrew Tanenbaum, 1992, Prentice Hall,
  913.   ISBN 0-13-588187-0.  This started out as a rewrite of the Minix
  914.   book, but he pulled the Minix-specific material and added seven
  915.   chapters on distributed systems.  It's a bit heavy for undergrads,
  916.   depending on how far into the distributed systems you go, but I like
  917.   Tanenbaum as an author.  He'll be bringing out a second edition of
  918.   the Minix book sometime soon; as he says, one is for `hands-on'
  919.   (Minix) and one is for `hands-off' (Modern OS).
  920.  
  921.   The book is divided into two parts: `traditional' introductory
  922.   material, taken more or less verbatim from the Minix book, and an
  923.   introduction to distributed systems.  Each parts concludes with a
  924.   case study and comparison of two well-known systems (Unix and
  925.   MS-DOS, and Mach and Amoeba).  The bibliography at the end is
  926.   organised well for more advanced coverage of the topics encountered
  927.   throughout the book.
  928.  
  929.   Topics covered in the first part include process concepts, memory
  930.   management, file system organisation and I/O, and deadlock detection
  931.   and avoidance.  The second part addresses issues such as distributed
  932.   communication, synchronisation (the section on clock synchronisation
  933.   is well put together), processes in distributed environments
  934.   (nothing on process migration), and distributed file systems (using
  935.   AFS as an example).
  936.  
  937.   This book has been translated into German; it is available from
  938.   Carl Hanser Verlag as `Moderne Betriebssysteme', ISBN 3-446-17472-9.
  939.  
  940. - `Concurrent Systems', Jean Bacon, 1992, Addison-Wesley, ISBN
  941.   0-201-41677-8.  This covers much the same material as `Modern
  942.   Operating Systems', but goes into rather more detail on databases
  943.   and languages.  The book is divided into four parts, and comes with
  944.   a separate instructor's manual (ISBN 0-201-62406-0).  The first
  945.   covers basic material, such as OS functions, and system and language
  946.   support for concurrent processes.  Part 2 deals with simple
  947.   concurrent actions, covering topics such as shared-memory IPC,
  948.   message passing, persistent data, crashes, and distributed data.
  949.   The third part of the book covers transactions, concurrency control,
  950.   and failure recovery.  The final section presents a set of case
  951.   studies, with Unix, Mach and Chorus being covered, along with some
  952.   of the work done at Cambridge over the past decade.  An interesting
  953.   emphasis is placed on language-level support for concurrency
  954.   throughout the book, and the focus on database issues is also a good
  955.   thing.
  956.  
  957.   I haven't read the book in as much detail as I would like, but it
  958.   seems to be well put together.  The cramming of so many topics under
  959.   one cover means that there is probably too much material for a
  960.   single undergraduate course, and the book perforce does not go into
  961.   as much detail as I would like on some topics (a problem I also find
  962.   with Tanenbaum's book).  Well worth a look, however.
  963.  
  964. Some books commonly used in conjunction with the texts listed above
  965. are:
  966.  
  967. - `The Design and Implementation of the 4.3BSD Unix Operating System',
  968.   Samuel Leffler, Kirk McKusick, Michael Karels, John Quarterman,
  969.   1989, Addison-Wesley, ISBN 0-201-06196-1.  This book describes the
  970.   kernel of 4.3BSD Unix in some detail, covering process and memory
  971.   management (the latter being heavily VAX-oriented), file system
  972.   organisation, device driver internals, terminal handling, IPC,
  973.   network communications, some details of the Internet protocols, and
  974.   system operation.  I found this book to be well-written and concise.
  975.  
  976.   Accompanying the above is the `4.3BSD Answer Book', Samuel Leffler,
  977.   Kirk McKusick, 1991, Addison-Wesley, ISBN 0-201-54629-9.  This short
  978.   book provides answers to all of the exercises found at the end of
  979.   each chapter in the daemon book.
  980.  
  981. - `The Design of the Unix Operating System', Maurice Bach, 1986,
  982.   Prentice Hall, ISBN not to hand right now.  This is the
  983.   authoritative description of the internals of System V Unix.  Due to
  984.   copyright restrictions, it contains no actual code, but rather
  985.   pseudo-code (I didn't find this to be a problem).  I haven't read
  986.   this book in a few years, so I can't remember what it covers.
  987.  
  988. - `The Magic Garden Explained: The Internals of Unix System V Release
  989.   4', Berny Goodheart, James Cox, 1994, Prentice Hall, ISBN
  990.   0-13-098138-9.  This books covers the workings of SVR4 in
  991.   substantial detail; it is more detailed than either of the above
  992.   texts, and appears to be of very high quality.  While the authors
  993.   recommend the book be read in parallel with study of the original
  994.   Unix source code, sufficient pseudocode representation of the key
  995.   algorithms has been included to permit a more or less detailed study
  996.   without restricted access to the original source code.
  997.  
  998. I am not aware of any similar book which covers the implementation of
  999. a distributed system.
  1000.  
  1001. ------------------------------
  1002. Subject: [6.2] What instructional operating systems can I use?
  1003. From: Operating systems teaching
  1004.  
  1005. - Minix, from Amsterdam's Vrije Universiteit, was developed by Andy
  1006.   Tanenbaum, and is a mostly-Unix lookalike based on a message-passing
  1007.   microkernel-similar architecture.  The system is used in Tanenbaum's
  1008.   `Modern Operating Systems' and its predecessor, `Operating Systems:
  1009.   Design and Implementation'.  See the Minix Information Sheet, posted
  1010.   regularly to comp.os.minix, for ordering information; Minix is
  1011.   copyrighted and is not in the public domain.
  1012.  
  1013. - NachOS is an instructional OS developed at Berkeley by Tom Anderson
  1014.   <tea@cs.berkeley.edu>, Wayne Christopher, Stephen Procter (and
  1015.   others?).  It currently runs on DEC MIPS and Sun SPARC workstations,
  1016.   HP PA-RISC, and 386BSD machines.  The NachOS system, along with
  1017.   sample assignments and an overview paper which was presented at
  1018.   Usenix, is available via anonymous ftp from
  1019.   ftp.cs.berkeley.edu:ucb/nachos.
  1020.  
  1021. - OSP (current version is 1.7) is an operating systems simulator,
  1022.   available via ftp from sblapis1.cs.sunysb.edu, with username ospftp,
  1023.   and password as in the instructor's guide.  Used in `OSP---an
  1024.   Environment for Operating Systems', Michael Kifer, Scott Smolka,
  1025.   Addison-Wesley.
  1026.  
  1027. - SunOS Minix consists of a set of patches for Minix which allows the
  1028.   Minix system to run in a single monolithic Unix process on top of
  1029.   SunOS 4.x on Sun 3 and Sun 4 machines.  SunOS Minix is produced by
  1030.   applying a set of patches to Mac Minix 1.5 (both 1.5.10.0 and
  1031.   1.5.10.1 can be used) or PC Minix 1.5.  Also, Atari Minix has been
  1032.   used as the base version by at least one person.  The latest version
  1033.   (2.0) includes a preliminary attempt at a port to Solaris 2.x.
  1034.   SunOS Minix is available via anonymous ftp from
  1035.   csc.canterbury.ac.nz:UNIX/SMX_2_00.TAR_Z.
  1036.  
  1037. - Xinu was developed at Purdue by Doug Comer and some others.  It was
  1038.   designed to be small and layered, so that the code is succinct and
  1039.   easily understandable.  It is intended for education, and is a
  1040.   `conventional' operating system.  Xinu runs on the IBM PC, Sun-3,
  1041.   SPARC, LSI, MIPS, Macintosh, and VAX architectures.  The system is
  1042.   used in Comer's `Operating System Design: the Xinu Approach'.
  1043.   Contact <xinu-librarian@cs.purdue.edu> or Prentice Hall for ordering
  1044.   information; Xinu is copyrighted and is not in the public domain.
  1045.  
  1046. ------------------------------
  1047. Subject: [6.3] Where can I find the canonical list of OS papers for grad courses?
  1048. From: Operating systems teaching
  1049.  
  1050. [93-03-14-17-09.47] Darrell Long <darrell@cse.ucsc.edu> maintains a
  1051. bibliography which provides a good starting point for graduate OS
  1052. course reading lists.  This may be imported using refdbms as
  1053. ucsc.grad.os, from refdbms.cse.ucsc.edu 4117 or refdbms.cs.vu.nl 4117.
  1054.  
  1055.